package cn.iocoder.yudao.framework.business.basic.service;

import jakarta.annotation.Nullable;

/**
 * <pre>
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 *  服务接口
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 * </pre>
 *
 * @author 山野羡民（1032694760@qq.com）
 * @since 2024/11/29
 */
public interface ValidateService<ENTITY> {

    /**
     * 校验数据是否存在
     *
     * @param id 唯一编号
     * @return 数据
     */
    default ENTITY validateExists(Long id) {
        return validateExists(id, null);
    }

    /**
     * 校验数据是否存在
     *
     * @param id 唯一编号
     * @param userId 用户编号
     * @return 数据
     */
    ENTITY validateExists(Long id, @Nullable Long userId);

    /**
     * 检查数据是否存在
     *
     * @param param 参数
     * @return 数据
     */
    default <P> boolean checkExists(P param) {
        return checkExists(param, null);
    }

    /**
     * 检查数据是否存在
     *
     * @param param 参数
     * @param userId 用户编号
     * @return 数据
     */
    <P> boolean checkExists(P param, @Nullable Long userId);

}
